跳到主要内容

Daft

Daft 适配器将 LakeSoul 暴露为原生 Daft data source 和 sink。LakeSoul 负责解析元数据和扫描分区,Daft 负责调度分布式读写任务。

安装可选依赖:

pip install 'lakesoul[daft]'

以下示例使用核心 Catalog 与表 IO中创建并写入数据的 events 表。

读取 LakeSoul 表

LakeSoulScan.to_daft() 返回惰性的 daft.DataFrame

from lakesoul import LakeSoulCatalog

catalog = LakeSoulCatalog.from_env()
dataframe = (
catalog.scan(
"events",
partitions={"event_date": "2026-08-27"},
columns=["id", "value"],
)
.to_daft()
)

result = dataframe.where(dataframe["value"] >= 50).collect()
result.show()

创建 Daft source 时会保留 LakeSoulScan 中的列裁剪和分区裁剪。后续 Daft 操作在执行 DataFrame 前仍保持惰性。

写入 Daft DataFrame

目标表必须已存在,schema 必须与 DataFrame 输出一致:

import daft

rows = daft.from_pydict(
{
"id": [1, 2],
"event_date": ["2026-08-27", "2026-08-27"],
"value": [52.0, 81.5],
}
)

table = catalog.table("events")
result = table.write_daft(rows)
print(result.row_count)

导入 lakesoul.daft 也会注册 DataFrame.write_lakesoul,该方法接收 LakeSoulTable

import lakesoul.daft

result = rows.write_lakesoul(table)

两种调用都默认使用 vortex-compact。需要时传入 format="vortex"format="parquet";详见物理文件格式

Daft task 使用 LakeSoul 原生 Writer。分布式写入完成后,sink 才会将生成的文件提交到 LakeSoul 元数据。